23

» WarCraft 3 / Вопрос по Библиотекам

Похожие вопросы:

ответ
Используй джасс-код и тогда ты сможешь прописывать в приказ рав-код любого заклинания\способности, а если хочешь сделать это при помощи ГУИ, тогда делай нестандартные скилы исключительно на базе того, что предложено в выборе.
ответ
Nirvana мод. Поищи информацию о нём. Там всё чудесно в этом плане вроде как реализовано.
ответ
Думал использовать чисто для экономии времени. По хорошему конечно надо самому написать системки, да все руки не доходят.
Может тогда подскажите, есть ли готовые более менее пригодные для использования. Сам всегда делал через торнадо, разве это уже не модно?
ответ
FogModifierStart(CreateFogModifierRect(GetLocalPlayer(), FOG_OF_WAR_VISIBLE, bj_mapInitialPlayableArea, true, false))
Создаем модификатор видимости локально.

23

» WarCraft 3 / Исправление бага

Похожие вопросы:

ответ
Этот патч еще в марте вышел, алло
А на хайве про новый, которого еще нет.

23

» WarCraft 3 / Способность не добавляется

Похожие вопросы:

ответ
короче пихаем сферу в спелбук и запрещаем его
у сферы безмолвие с настройками
ответ
опечатка в редакторе (не моя разумеется)
ответ
GF RaiseD:
Есть "Triggering Unit"/"переключающий юнит" - вот его и юзай. В остальном же со скрина не ясно почему твой триггер не работает. Баг может быть вызван неверной настройкой спелла или другими триггерами, но однозначно не здесь.
ответ
Steal nerves:
Засовываем змеиную ловкость в спелбук, а спелбук блокируем командой "Игрок - Enable/Disable Ability". В скрытый спелбук можно добавлять только пассиные способности. Ищи на тему как скрыть способность, иконку/кнопку способности. xgm.guru/forum/showthread.php?t=31722 И называйте норм тему
можно через хак, но требует определенные знания
function SetAbilityDisabled takes integer pAbility, integer count returns nothing
function GetAbilityDisabledCount takes integer pAbility returns integer
function SetAbilityHidden takes integer pAbility, integer count returns nothing
function SetAbilityDisabled2 takes integer pAbility, integer count returns nothing
function GetAbilityDisabled2 takes integer pAbility returns integer
function ShowAbilityById_Main takes integer ConvertedHandle, integer d returns nothing
function HideAbilityButton takes unit u, integer id, boolean hide returns nothing
ответ
BaHeK, есть вроде
только чукча не читатель
Talgar2, есть 3 варианта
  1. давай абилки которые дают эффект со степенью двойки(например чтобы получить +12 надо дать абилки +8 и +4)
  2. используй баг с итемами
  3. используй мемхак

23

» WarCraft 3 / Команда -save

Похожие вопросы:

ответ
А еще лучше - скинуть ссыль на какую-нибудь статью со списком callчто-то там команд.
ответ
создай проект, распиши что есть, что нужно сделать, пару скринов, свободные вакансии
ответ
Сделать триггер для проверки кода, ну и организовать систему для его считывания и поверь это очень много всего, придется продумать.
Если коротко ты цифрами будешь (условно) сохранять своего героя, каждый набор цифр отвечает за какой то параметр героя, силу, ловкость, уровень, предметы и так далее, когда я говорю что это очень много всего придется продумать так и есть, тебе придется создать базу данных, для всех чисел и все проверять при введении команды, для защиты можно сверять суму чисел и проверять героя за которого играет игрок.
Мой тебе совет, не поленись и вбей в поиск "сделать команду save для карты варкрафт 3", на твое удивление там будет то что тебе нужно, уже на второй ссылке.
ответ
В этой статье есть вся необходимая информация

23

» WarCraft 3 / Строка чата

Похожие вопросы:

ответ
грузим по хэндлу строки
ответ
Игрок - (Игрок((Min(1,5))))
?

Просто в 1 триг добавь все события Игрок 1 2 3 ввёл пустая строка как подстрока.
Сделал ты правильно, вот только группа игроков вызывает утечку. Если хочешь больше оптимизации в карте - занеси в переменную Player(группа игроков) каждого игрока. Player[1] = группа игроков(Игрок 1) и т.д. И используй переменную
ответ
тебе не нужны сцепленные строки
когда прочтёшь все статьи возвращайся
molot39, чел не может выбрать функцию из списка
ответ
DrTema, пусть в чат вводится строка вида -move x,y
берём подстроку(назовём её s) с 6 позиции до конца строки
ищем в s знак , и запоминаем позицию знака (назовём её i)
тогда берём подстроку от s с 0 позиции до i
это будет наша координата x
а подстрока от s с i+1 до конца подстроки s это число y
на гуи это будет выглядеть громоздко
на джасс сделать намного проще
EnergyFrost, я бы заменил то что у тебя в ретурне на
return i<StringLength(s)-1;
ибо входят координаты в рект или нет это уже проблемы того кто юзает систему
а вот были ли считанны данные или нет это уже важно

23

» WarCraft 3 / Режим кинематика

Похожие вопросы:

ответ
ConditionToMove - берет юнита, возвращает условие (true - юнит может двигаться, false - не может)
Я так понимаю, последний параметр в строке вызова функции на False поменять, чтобы не двигался. Вар с ЖНГП глючит, нет возхможности проверить.
ответ
Ivan99, субтитры включи
Умник
ответ
Странно, попробуй тогда еще нестандартные кланы и фиксированные параметры игрока. Рамка в синематике (леттербокс режиме) должна быть та же, что и игровой интерфейс.

23

» WarCraft 3 / Как изменить модель дерева?

Похожие вопросы:

ответ
100% будет работать, если заменить стандартные текстуры деревьев, а в самих моделях вместо пути к текстуре указать соответствующий Replaceable ID. (Если порченные версии тоже заменить под новую модель, то ещё и порча будет корректно работать =)

23

» WarCraft 3 / Как делать иконку как у героя?

Похожие вопросы:

ответ
выбери любое здание, копируй, при копирование предложит ввести id обьекта, вводи его с большой латинской буквы (пример H000), здание будет героем, правда я не помню дает ли обычный WE вводит id обьектов, если что установи JNGP
ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
ответ
Rасательно вопроса как добавить в книгу заклинаний больше 12 скиллов - можно добавить книгу в книгу и новой книге сделать ещё несколько скиллов и ещё 1 или несколько книг. В каждую книгу можно ещё по книге и так далее.
Главное - ID приказа у всех книг должны быть разные.

Иконки способностей кольца, когтей и т.д. отображаться не будут, ты можешь отображать скиллы-пустышки, а (только это на всякий случай предложенный вариант!) герою выдавать сам предмет, предварительно вытряхнув из его инвентаря все предметы на пол. После добавления в пустой инвентарь нужного предмета, например когтей - заполняем ещё 4 слота предметами-пустышками, затем даём предмет со способностью "предметы герой", у этой способности для предмета должна стоять галочка "относится к предмету", обязательно. После этого инвентарь снова очистится уже сам, однако добавленный предмет на атаку будет иметь эффект. После чего можно подобрать с пола предметы героя и отдать ему триггерно.

Почему не стоит добавлять способность когтей триггерно? - потому что 2 добавленные одинаковые способности не суммируются. Два одинаковых предмета же суммируются.
Есть ли минусы у вышеописанного способа? - скорее всего удалить добавленный бонус нормально не выйдет. Придётся вытряхать инвентарь удалением способности "предметы герой" у самого героя, а это тот ещё геморрой -восстановить потом всё, что должно было остаться неудалённым.
ответ
~8gabriel8:
mishanka122:
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.

23

» WarCraft 3 / начисление опыта

Похожие вопросы:

ответ
Андреич, стоит еще добавить, я думаю, как исправить это.
furch1k, в этой таблице тебе нужно будет проставить столько значений (к примеру 100, тоесть 100% получение опыта) каков максимальный уровень героя. То есть, если у тебя на карте макс.уровень 10, то нужно проставить 10 раз по 100.

23

» WarCraft 3 / конвертация в mdl

Похожие вопросы:

ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.

23

» WarCraft 3 / Рекурсия

Похожие вопросы:

ответ
екзекут принимает строку
function Recursion takes nothing returns nothing
call TriggerExecute("Recursion")
endfunction
а вообще что за бред
фатал делается гетлокалплеером и техникой
ответ
map_maiker, как и в java или c++
а вообще неужели попробовать самому дольше чем создать ресурс?
ответ
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.

23

» WarCraft 3 / Аура крита

Похожие вопросы:

ответ
Провёл пару тестов, как оказалось крит высчитывается только при нанесении урона как я понял, так что уклониться от него можно всегда, а вот если уклон не прошёл, то уже есть шанс на крит. =)
ответ
Вот аура крита

23

» WarCraft 3 / Отлов урона

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
там есть куча статей на эту тему + пример на гуи от меня любимого
ответ
ОП, спелы все триггерные?

Если да, то заводишь глобальную переменную bool IsSpell = false, перед нанесением урона в коде даёшь ей true, после - обратно false. В триггере, который срабатывает на получение урона, первым действием ставишь локалку булёвую, которая ==IsSpell. Вуаля, ты отслеживаешь весь урон с абилок, а что не урон с абилок, то есть урон с руки.

Сам так всегда делал, никогда не понимал пляски с бубнами и прочими орбами. Оно, конечно, проще идеологически, но по факту намного геморройнее: добавлять орб, проверять орб, удалять орб, подменять реальный орб триггерно...

Кстати, можно по такой же схеме через логические переменные указывать тип урона, например, чистый, физический (почему бы и не давать с абилок физический урон?) или магический, от этого вообще что угодно можно пилить, хоть кучу видов брони, хоть цветовые индикаторы разного типа урона.
ответ
У тебя событие в триггере неверное. Ты указал, что юнит атакован, а необходимо событие, что юнит получает урон.
ответ
Я использую следующий костыль: урон от заклинаний наносится только от лица дамика, который имеет соответствующую способность для проверки. Пассивку, например с названием "Урон - огонь". Тем самым, можно отследить тип полученного урона.

23

» WarCraft 3 / Ошибка при конвертации

Похожие вопросы:

ответ
Тут по-моему всё очевидно. Чадо пытается открыть в мдлвисе модель в формате m2, чего мдлвис не делает ещё с выхода burning crusade.

23

» WarCraft 3 / Предметы

Похожие вопросы:

ответ
Так ты же выключаешь триггер на 18 секунд вот он и не срабатывает.
Поставь условие, что герыч не имеет абилки-пустышки, если не имеет - дать её и через 18 сек забрать и пустить молнию.
Правда я не уверен насчёт того, отловится ли attacking unit через 18 сек вейта, проверь...
Вообще, если устраивает орбом - то даёшь "сферу молний" с эффектом "цепь молний", у которой 18 сек перезарядка(у цепи не у сферы)
ответ
Melissa:
а какая способность у этого предмета?
Разобрался с этой проблемой.
ответ
XGM Bot:
Похожие вопросы:

ответ
пикнутый итем это для цикла
а у тебя тут должен быть манипулятед итем
ответ
ворлдэдит=>Файл=>Параметры=>Общие=>Разрешить использ. отриц. значений в Редакторе Объектов.
Изменяешь значение после Шифт+Энтер. Способности приписываешь через запятую названиями переменных (показать ид - Контрол+Ди).
ответ
Так ты же выключаешь триггер на 18 секунд вот он и не срабатывает.
Поставь условие, что герыч не имеет абилки-пустышки, если не имеет - дать её и через 18 сек забрать и пустить молнию.
Правда я не уверен насчёт того, отловится ли attacking unit через 18 сек вейта, проверь...
Вообще, если устраивает орбом - то даёшь "сферу молний" с эффектом "цепь молний", у которой 18 сек перезарядка(у цепи не у сферы)
ответ
предмет это просто иконка которая содержит способности
книга заклинания это способность
и редактировать нужно способность "книга заклинаний"
или создать на её основе новую способность "моя книга заклинаний"
а потом у предмета просто указать способность "моя книга заклинаний"
если не хватает знаний то их можно пополнить в статьях
думаю первых 200 статей хватит чтобы создать несложную карту
ответ
Первый вопрос. Проблема с триггерным перемещением возникает, если скорость объекта, движение которого подразумевается, равно 0. Поставь 1 и будет тебе счастье. Есть интересный способ обездвижить юнита. Это через SetUnitPropWindow. Поставь в аргументы юнита и число 0 и он перестанет двигаться.
Второй вопрос. В характеристиках твоего dummy-юнита в РО(редактор объектов) выставь поле: Наводка (контрольный радиус) (uerd) и поставь значение 0.00. Юнит не будет поворачиваться при выстреле.

ответ
Steal nerves:
Способности нужно дать юниту, и все. Если эффект временный, используем вэйт/wait (по-русски ждать) или таймеры, по истечении которого удаляем способность. Но вэйты не рекомендуются для использования.
xgm.guru/p/wc3/articles новичок, иди почитай
xgm.guru/p/wc3/needspells здесь не стол для заказов, хотя тема заброшена
xgm.guru/p/wc3/bpe где-то тут была похожее, только с баффами
можете конкретно написать, что вам нужно.
смотреть сюда
событие - юнит применяет способность
условие -применяемая способность == тип твоей способности
действие - добавить способность
ждать 15 сек.
действие - удалить способность
про локалки + таймер, хэш-таблицы
xgm.guru/p/wc3/jass_local_vars есть примерчик внизу, похожий на ваш
ответ
Ищи в разделе "Нейтральное здание".

23

» WarCraft 3 / Фаталы в триггере

Похожие вопросы:

ответ
Спасибо всем за ответы и пояснения! Закрываю флудильню :с
ответ
Ну тут все очевидно, я абсолютно точно установил источник проблемы и нашел легкодоступное решение, специально для Вас.
Насколько я понимаю, мне совершенно не обязательно его описывать, так как Вы, справедливо полагая что Все люди на Земле, как и Вы, обладают экстрасенсорными способностями, можете подсмотреть его из моей головы.
ответ
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка
Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек

23

» WarCraft 3 / Атмосфера

Похожие вопросы:

ответ
Вы что шутите? Никто банить за "плохие" вопросы не будет. Есть более логичное решение - скрывать такие вопросы и кидать линки на соответствующие материалы.
ответ
PhysCraft, читал, там очень мало написано, и совсем не то что я ожидал. В принципе я вроде смог прописать путь по папкам, сделал что бы играла музыка, в игре модели видно, но в редакторе нет, и как я теперь буду в редакторе ландить? Мне импорт для ландшафта нужен. Есть какой-то способ в редакторе тоже видеть?
ответ
Helkar, Как говорится. Работай и не смотри на других.
ответ
Модуль вопросов не предназначен для этого, для подобных обсуждений используйте блоги.
ответ
лицензия?
Нет

23

» WarCraft 3 / Триггер на перемещение

Похожие вопросы:

ответ
я сделал ) Спасибо что не скинули готовое хоть сам допетрил)
ответ
Держи. Чтобы проверить нажми ESC в игре.
раскрыть
потребовалось полторы минуты
ответ
Умирающий юнит, в том понятии, в каком его жуёт игра, не имеет баффов.
Вместо "Умирает" отлавливай поулчение смертельного удара (событие юнит получает урон).
Если полученный урон > оставшегося здоровья - то сделать всё то, что у тебя для умирающего
ответ
DvernoiProem:
Там все включенные триггеры - относятся к системе. Остальные выключены.
Попробуй ка сохранить карту без этой функции, потом опять с нею. Я сейчас попробую оптимизировать её.
ответ
Сделал простой пример на jass. Если пехотинец в радиусе 300 от паладина, ему дается способность доспех веры.
jass
globals
    unit Unit1
    unit Unit2
    timer Timer = CreateTimer()
endglobals

function Trig_sample_Conditions takes nothing returns boolean
    return GetFilterUnit() == Unit2 and GetUnitAbilityLevel(GetFilterUnit(), 'AHad') == 0
endfunction

function Trig_sample_Actions2 takes nothing returns nothing
    if not IsUnitInRange(Unit1, Unit2, 300.) then
        call UnitRemoveAbility(Unit2, 'AHad')
        call PauseTimer(GetExpiredTimer())
    endif
endfunction

function Trig_sample_Actions takes nothing returns nothing
    call UnitAddAbility(Unit2, 'AHad')
    call TimerStart(Timer, .1, true, function Trig_sample_Actions2)
endfunction

//===========================================================================
function InitTrig_sample takes nothing returns nothing
    local trigger trig = CreateTrigger(  )
    set Unit1 = CreateUnit(Player(0), 'Hpal', 0., 0., 0.)
    set Unit2 = CreateUnit(Player(0), 'hfoo', 0., 0., 0.)
    
    call TriggerRegisterUnitInRange(trig, Unit1, 300., function Trig_sample_Conditions)
    call TriggerAddAction(trig, function Trig_sample_Actions)
endfunction

23

» WarCraft 3 / Улучшения предметов

Похожие вопросы:

ответ
Понизить уровень улучшения никак нельзя. Многие пробовали самые извращенные способы, но нет.
Покопался на форуме, нашел темы, где обсуждались похожие проблемы (правда пути решения там разные):
ответ
используй геройский скилл предметы
ответ
Нет, не существуют. Без бд не обойтись.
ответ
тогда можно заменить исследование на создание юнита
здание создает определенного юнита -> повышаем уровень инвентаря
у этого способа есть несколько минусов:
  • одна иконка на всех уровнях улучшения
  • юнит не исчезнет на последнем уровне улучшения, а значит придется заменять здание на другое, но уже без этого юнита
ответ
Мда, кто так делает а? Требование лиж закрывает иконку, эффект то пассивка дает всегда, и пофигу её что там за требование..
Повышай броню так или делай другой эффект улучшения - Способность на уровень.
Сделай 2 уровня у твоих Рунических браслетов на 1 уровне сделай бонус брони 0 а на втором какой хочешь, потом с помощью апгрейда повышай уровень способности (а вы не знали что апгрейды могут повышать уровни способностям, изменять данные аур и так далее?)